ক্লোজার একটি ফাংশনাল প্রোগ্রামিং ভাষা, এবং এটি ইমিউটেবল ডেটা কাঠামো ব্যবহারকে জোর দেয়। ইমিউটেবল কালেকশন এমন একটি ডেটা কাঠামো যেখানে ডেটা একবার সেট হলে তা পরিবর্তন করা যায় না। প্রতিবার পরিবর্তনের পরিবর্তে একটি নতুন ডেটা কাঠামো তৈরি করা হয়, যেখানে আগের ডেটার পরিবর্তন প্রতিফলিত হয় না। এই ধারণাটি ক্লোজারে কার্যক্ষমতা এবং নিরাপত্তা নিশ্চিত করে এবং কনকারেন্ট প্রোগ্রামিংয়ের জন্য একে একটি শক্তিশালী ভাষায় পরিণত করে।
ইমিউটেবল কালেকশন ব্যবহারের পেছনে কিছু গুরুত্বপূর্ণ কারণ রয়েছে, বিশেষ করে ফাংশনাল প্রোগ্রামিং এবং মাল্টি-থ্রেডিং এনভায়রনমেন্টে:
ক্লোজারে প্রধান চারটি ইমিউটেবল কালেকশন রয়েছে: List, Vector, Set, এবং Map। প্রতিটি কালেকশনই ইমিউটেবল এবং প্রতিটি ব্যবহারের জন্য উপযুক্ত।
লিস্ট একটি সংযুক্ত এবং ইমিউটেবল ডেটা কাঠামো, যা একটি নির্দিষ্ট ক্রমে ডেটা সংরক্ষণ করে। নতুন মান যোগ করা হলে একটি নতুন লিস্ট তৈরি হয়, কিন্তু পূর্বের লিস্টটি অপরিবর্তিত থাকে।
(def my-list '(1 2 3))
(def new-list (cons 0 my-list))
; আউটপুট:
; my-list: (1 2 3)
; new-list: (0 1 2 3)
ভেক্টর একটি ইমিউটেবল এবং ইন্ডেক্সড ডেটা কাঠামো, যা দ্রুত অ্যাক্সেস এবং সংশোধনের জন্য উপযুক্ত। এটি সাধারণত তালিকা ডেটা সঞ্চিত রাখতে ব্যবহৃত হয়।
(def my-vector [1 2 3])
(def new-vector (conj my-vector 4))
; আউটপুট:
; my-vector: [1 2 3]
; new-vector: [1 2 3 4]
সেট একটি ইমিউটেবল কালেকশন যা অনন্য মান সংরক্ষণ করে। নতুন মান যোগ করলে এটি একটি নতুন সেট তৈরি করে, যেখানে পূর্বের সেট পরিবর্তন হয় না।
(def my-set #{1 2 3})
(def new-set (conj my-set 4))
; আউটপুট:
; my-set: #{1 2 3}
; new-set: #{1 2 3 4}
ম্যাপ একটি কী-ভ্যালু পেয়ার ভিত্তিক ইমিউটেবল ডেটা কাঠামো, যা অ্যাসোসিয়েটিভ ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। নতুন কী-ভ্যালু জোড়া যোগ করলে এটি একটি নতুন ম্যাপ তৈরি করে।
(def my-map {:name "Alice" :age 30})
(def new-map (assoc my-map :city "New York"))
; আউটপুট:
; my-map: {:name "Alice", :age 30}
; new-map: {:name "Alice", :age 30, :city "New York"}
ক্লোজারের ইমিউটেবল কালেকশনগুলি কিছু অপারেশন সহজে সম্পাদন করতে সাহায্য করে:
কালেকশন | বৈশিষ্ট্য | উদাহরণ |
---|---|---|
List | সংযুক্ত, ক্রমিত ডেটা স্ট্রাকচার | (1 2 3) এবং নতুন (0 1 2 3) |
Vector | ইন্ডেক্সড, দ্রুত অ্যাক্সেসযোগ্য | [1 2 3] এবং নতুন [1 2 3 4] |
Set | অনন্য মান সংরক্ষিত | #{1 2 3} এবং নতুন #{1 2 3 4} |
Map | কী-ভ্যালু পেয়ার ভিত্তিক | {:name "Alice", :age 30} এবং নতুন {:name "Alice", :age 30, :city "New York"} |
ক্লোজারের ইমিউটেবল কালেকশনগুলো ফাংশনাল প্রোগ্রামিংয়ের জন্য উপযুক্ত এবং নিরাপদ ডেটা হ্যান্ডলিং নিশ্চিত করে, যা বিশেষ করে কনকারেন্ট প্রোগ্রামিংয়ে কার্যকর।
common.read_more